// src/mixins/arrayUpdate.js
/**
 * 导出一个默认的混入对象，该对象包含用于安全更新数组元素的方法
 */
export default {
  // 定义混入的方法
  methods: {
    /**
     * 安全更新数组中指定索引位置的元素
     * @param {Array} targetArray - 目标数组，需要进行元素更新的数组
     * @param {number} index - 要更新的元素的索引位置
     * @param {Object} newValue - 用于更新的新值对象，将与原数组元素进行合并
     * @returns {boolean} - 如果更新成功返回 true，否则返回 false
     */
    $safeUpdateArray(targetArray, index, newValue) {
      // 检查索引是否在有效范围内
      if (index >= 0 && index < targetArray.length) {
        // 使用 Vue 的 $set 方法更新数组元素，确保 Vue 能检测到变化
        // 将原数组元素与新值对象进行合并，新值对象的属性会覆盖原元素的同名属性
        this.$set(targetArray, index, {
          ...targetArray[index],
          ...newValue
        })
        // 更新成功，返回 true
        return true
      }
      // 索引无效，更新失败，返回 false
      return false
    }
  }
}